package com.youlu.campus.entity;

import com.youlu.campus.base.base.EntityBase;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

/**
 * 活动工作信息表
 */
@Getter
@Setter
@Document(collection = "activity_job_info")
public class ActivityJobInfo extends EntityBase {
    /**
     * 企业信息
     */
    @Indexed
    private String enterpriseInfoId;
    /**
     * 企业信息
     */
    private EnterpriseInfo enterpriseInfo;


    /**
     * 工作名称
     */
    private String name;
    /**
     * 工作类型,0:兼职;1:实习;2:全职
     */
    @Indexed
    private String type;
    /**
     * 岗位类型,待定
     */
    private String jobType;
    /**
     * 状态,0:未开始,1:进行中,2:已完成
     */
    private Integer status;

    /**
     * 工作封面
     */
    private String imageUrl;

    /**
     * 工作详情
     */
    private String detail;

    /**
     * 工作规则
     */
    private String rule;

    /**
     * 开始时间
     */
    private Date startTime;

    /**
     * 结束时间
     */
    private Date endTime;

    /**
     * 工作报名按钮名称
     */
    private String buttonName;

    /**
     * 优先级,数字越大，优先级越高
     */
    private Integer priority;
    /**
     * 配置的参与人数
     */
    private Integer configParticipants;
    /**
     * 实际的参与人数
     */
    private Integer participants;
    /**
     * 奖励发放开始时间
     */
    private Date incentivesStartTime;
    /**
     * 奖励发放结束时间
     */
    private Date incentivesEndTime;
    /**
     * 工作公告
     */
    private List<String> announcements = new ArrayList<String>();
    /**
     * 工作阶段数
     */
    private Integer phase;
    /**
     * 阶段规则,<K,<K1,V>>,例子:<1阶段10人,基础证书编号>
     */
    private HashMap<Integer, Integer> phaseRules = new HashMap<Integer, Integer>();
    /**
     * 奖励内容状态,默认为TRUE,开启
     */
    private Boolean rewardsStatus = Boolean.TRUE;
    /**
     * 奖励内容
     */
    private String rewardsContent;
    /**
     * 奖励内容图片
     */
    private List<String> rewardsContentImageUrls = new ArrayList<String>();
    /**
     * QQ 群
     */
    private List<String> qqGroups = new ArrayList<String>();
    /**
     * 结算类型,0:小时结算,1:日结算,2:月结,3:年结
     */
    private Integer balanceType = 1;
    /**
     * 费用,单位分
     */
    private Integer fee;
    /**
     * 费用字符串,3000元/月
     */
    private String feeStr;
    /**
     * 工作日
     */
    private String workingDay;
    /**
     * 工作时间
     */
    private String workingTime;
    /**
     * 工作地点
     */
    private String workingAddress;
    /**
     * 工作要求
     */
    private String workingRe;
    /**
     * 岗位详情
     */
    private String jobDetail;
    /**
     * 时长,单位是小时,获得证书就累计
     */
    private Integer duration;
    /**
     * 是否报名,默认否,非持久化数据
     */
    @Transient
    private Boolean joined = Boolean.FALSE;
    /**
     * 推荐因子
     */
    private Double recommendFactor;
    /**
     * 标签
     */
    private List<String> tags = new ArrayList<>();

    /**
     * 报名时间
     */
    @Transient
    private Date signUpTime;
    /**
     * 完成时间
     */
    @Transient
    private Date accomplishTime;

    /**
     * 是否收藏
     */
    @Transient
    private Boolean favorited = Boolean.FALSE;
    /**
     * 收藏时间
     */
    @Transient
    private Date favoritedTime;
    /**
     * 副标题
     */
    private String desc;
}
